import java.io.IOException;
import java.util.StringTokenizer;

class P10205 {

  private static String newLine = System.getProperty("line.separator");

  static String readLn() {
    StringBuffer buffer = new StringBuffer();
    int car = -1;

    try {
      car = System.in.read();
      while ( (car > 0) && (car != newLine.charAt(0))) {
        buffer.append( (char) car);
        car = System.in.read();
      }
      if (car == newLine.charAt(0))
        System.in.skip(newLine.length() - 1);
    }
    catch (IOException e) {
      return (null);
    }

    if ( (car < 0) && (buffer.length() == 0))
      return (null); /* eof */
    return (buffer.toString()).trim();
  }

  public static void main(String[] args) {
      int numeroDeCasos = Integer.parseInt(readLn());
      computaCasos(numeroDeCasos);
  }

  private static void computaCasos(int numeroDeCasos) {
    readLn();
    for (int k = 0; k < numeroDeCasos; k++) {
      String linha = readLn();
      computaCasoUnico(Integer.parseInt(linha));
      if (k + 1 != numeroDeCasos) System.out.println();
    }
  }

  private static void computaCasoUnico(int numeroDeEmbaralhamentos) {
    int[][] embaralhamentos = leEmbaralhamentos(numeroDeEmbaralhamentos);
    int[] sequeciaDeEmbaralhamentos = leSequenciaDeEmbaralhamentos();
    int[] baralho = criaBaralho();
    baralho = aplicaSequeciaDeEmbaralhamentos(embaralhamentos, sequeciaDeEmbaralhamentos,
                                    baralho);
    imprimeBaralho(baralho);
  }

  private static int[] aplicaSequeciaDeEmbaralhamentos(int[][] embaralhamentos,
      int[] sequeciaDeEmbaralhamentos, int[] baralho) {
    int numeroDeEmbaralhamentos = sequeciaDeEmbaralhamentos.length;
    for (int k = 0; k < numeroDeEmbaralhamentos; k++) {
      baralho = aplicaEmbaralhamento(embaralhamentos[sequeciaDeEmbaralhamentos[k]], baralho);
    }
    return baralho;
  }

  private static int[] aplicaEmbaralhamento(int[] embaralhamento, int[] baralho) {
    int[] baralhoEmBaralhado = new int[52];
    for (int k = 0; k < 52; k++) {
      baralhoEmBaralhado[k] = baralho[embaralhamento[k]-1];
    }
    return baralhoEmBaralhado;
  }


  private static int[][] leEmbaralhamentos(int numeroDeEmbaralhamentos) {
    int[][] embaralhamentos = new int[numeroDeEmbaralhamentos][52];
    for (int k = 0; k < numeroDeEmbaralhamentos; k++) {
      embaralhamentos[k] = leUmEmbaralhamento();
    }
    return embaralhamentos;
  }

  private static int[] leUmEmbaralhamento() {
    int[] embaralhamento = new int[52];
    String linha = readLn();
    StringTokenizer linhaQuebrada = new StringTokenizer(linha, " ");
    for (int k = 0; k < 52; k++) {
      if (linhaQuebrada.countTokens() == 0) {
        linha = readLn();
        linhaQuebrada = new StringTokenizer(linha, " ");
      }
      embaralhamento[k] = Integer.parseInt(linhaQuebrada.nextToken());
    }
    return embaralhamento;
  }

  private static int[] leSequenciaDeEmbaralhamentos() {
    String sequenciaString = "";
    String linha = readLn();
    while (linha != null &&  !linha.equals("")) {
      sequenciaString += linha + " ";
      linha = readLn();
    }
    StringTokenizer sequenciaQuebrada = new StringTokenizer(sequenciaString,
        " ");
    int tamanho = sequenciaQuebrada.countTokens();
    int[] sequenciaDeEmbaralhamentos = new int[tamanho];
    for (int k = 0; k < tamanho; k++) {
      sequenciaDeEmbaralhamentos[k] = Integer.parseInt(sequenciaQuebrada.
          nextToken()) -1;
    }
    return sequenciaDeEmbaralhamentos;
  }

  private static void imprimeBaralho(int[] baralho) {
    int tamanho = baralho.length;
    for (int k = 0; k < tamanho; k++) {
      System.out.println(nomeDaCarta(baralho[k]));
    }
  }

  private static int[] criaBaralho() {
    int[] baralhoVirgem = new int[52];
    for (int k = 0; k < 52; k++) {
      baralhoVirgem[k] = k + 1;
    }
    return baralhoVirgem;
  }

  private static String nomeDaCarta(int numero) {
    String naipe = "";
    switch ( (numero - 1) / 13) {
      case 0:
        naipe = "Clubs";
        break;
      case 1:
        naipe = "Diamonds";
        break;
      case 2:
        naipe = "Hearts";
        break;
      case 3:
        naipe = "Spades";
        break;
    }

    switch ( (numero % 13) + 1) {
      case 11:
        return "Jack of " + naipe;
      case 12:
        return "Queen of " + naipe;
      case 13:
        return "King of " + naipe;
      case 1:
        return "Ace of " + naipe;
      default:
        return ( (numero % 13) + 1) + " of " + naipe;
    }
  }

}
